如何通俗易懂地解释卷积?
(给Python开发者加星标,提升Python技能)
来源:知乎-1335
https://www.zhihu.com/question/22298352/answer/1071892762
我来举个通俗易懂的例子吧。我大一是这么理解记忆的,到现在大四一直没忘记过。
要理解卷积,就必须树立起来“瞬时行为的持续性后果”这个概念。
举个例子。在一个时刻点,我以迅雷不及掩耳之势吃下了一个冰激凌,此时我的体重瞬间增加,之后随着消化吸收能量利用和排泄等生理活动的进行,我的体重又缓慢下降。如下图所示:
我们把这个函数记为
如何理解“瞬时行为的持续性后果”呢?在这个例子里,吃冰激凌是瞬间完成的动作,是一个瞬时行为;吃完冰激凌之后的体重的缓慢下降是持续了一段时间的,因此是吃冰激凌这个瞬时行为的一个持续性后果。
此时,只有在0时刻的瞬间吃了一个冰淇凌,在0时刻的瞬间,吃冰淇凌的速度是
接下来我们考虑,我吃冰淇凌的频率很低,且每次只在一个瞬间吃一个冰淇凌,每次都等到体重恢复到原来的程度了再吃一个,那么我的体重变化就是这样子的。
这种情况下,如果我想要知道每一个时刻的体重,只需要知道我吃每个冰淇凌的时刻
接下来,我们考虑,如果我吃冰淇凌的速度恒定为1(注意不是一瞬间吃一个了,不是冲击函数),且时时刻刻都在吃冰淇凌,那么,在我连续吃了
这个问题是不是有点不好算了呢?之前的冰淇凌增加的体重还没降到0呢,现在的冰淇凌带来的体重就又来了,还一直持续,还是连续的,想想就头疼。
这个时候,要引入两个个原理 。
第一,线性原理。即,我在一瞬间吃冰淇凌的个数,会以线性的方式作用在冰淇凌对体重的影响函数
第二,累加原理。即,冰淇凌的作用效果是可以累加的。即,一段时间之前我吃了一个冰淇凌,经过了一段时间的体重下降,现在我的体重是
这时我们来试着计算,在从开始就不停地吃冰淇凌,且吃冰淇凌的速度恒定为1的情况下,在任意时刻
由于我在不停地吃冰淇凌,所以,我们先算,在某时刻
那么,根据累加原理,现在时刻
上面这个式子是不是有点像我们学过的卷积了呢?
我们上面的讨论基于我们吃冰淇凌的速度是常数1,那么,如果我吃冰淇凌的速度不是常数,而是一个连续变化的函数,如在t时刻,吃冰淇凌的速度是
同样,我们先算,在某时刻
再根据累加原理,现在时刻
这就是大家平时接触到的卷积了!
因此,在我的理解下,我将卷积解释为:
一个对象(本文中的吃冰淇凌)对一个系统(本文中的体重)的作用效果满足线性原理、累加原理。该对象对这个系统连续作用了一段时间后,求该系统的状态。这个时候,一个卷积就可以求出来了!
在卷积
我们来验证一下第二个函数
最后,是一点说明。
课本上标准的卷积其实长成下面这个样子,积分区间是
这个在我这个case里也比较好理解,主要是考虑到时间的物理意义。
第一,理解当
第二,理解当
所以,
在其他的case里,情况就不一样了。
1、某一个对象的作用域可能不是时间域,不必遵循时间上的因果律。因此,当
2、某一个对象的作用域可能不是时间域,作用域存在负数的可能性。因此,当
基于以上两点考虑,积分区间就是
觉得本文对你有帮助?请分享给更多人
关注「Python开发者」加星标,提升Python技能
好文章,我在看❤️